Jede Programmiersprache enthält mindestens die folgenden Elemente:
Das folgende Sprichwort enthält eine Entscheidung, die immer gilt:
"Kräht der Hahn auf dem Mist, so ändert sich das Wetter oder es bleibt, wie es ist".
In der Syntax von VBA lautet das Sprichwort:
If Hahn kräht auf dem Mist Then
Wetter ändert sich
Else
Wetter bleibt, wie es ist
End If
Wenn die Bedingung zwischen If und Then zutrifft, dann wählt das Programm den Then-Zweig, andernfalls führt es den Else-Zweig aus. Nach End If fährt das Programm mit dem nächsten Befehl nach End If weiter:
If <Bedingung> Then
<Dann-Anweisungen>
Else
<Sonst-Anweisungen>
End If
<nächster Befehl nach If>
Der Else-Zweig kann weggelassen werden, falls das Programm nach der erfolglosen Prüfung der Auswahlbedingung mit dem nächsten Befehl weiterfahren soll, statt den Else-Zweig auszuführen. End If kann weggelassen werden, falls <Dann-Anweisungen> (und allenfalls <Sonst-Anweisungen>) aus einer einzigen Anweisung besteht und die ganze Entscheidungsanweisung auf einer Programmzeile Platz findet. Die folgenden Beispiele bedeuten beide dasselbe, ihre Syntax ist aber verschieden:
If Ausleihehäufigkeit(i) > Maximum Then Maximum = Ausleihehäufigkeit(i) End If
If Ausleihehäufigkeit(i) > Maximum Then Maximum = Ausleihehäufigkeit(i)
Sowohl die Entscheidungs- als auch die Wiederholungsanweisung prüfen eine Bedingung, bevor sie den Then- oder Else-Zweig wählen bzw. die Anweisungen in der Schleife wiederholen. Die Wiederholungsanweisung muss die Variablen der Wiederholungsbedingung in jedem Durchgang ändern, damit die Wiederholung abbricht. Andernfalls kommt es zu einer Endlosschleife: In der folgenden Variante unseres Summenprogramms entfernt sich zum Beispiel die Wiederholungsvariable Zahl mit jedem Durchgang weiter von der Endbedingung <= 1000 und führt deshalb zu einer Endlosschleife:
Zahl = 1 Summe = 0 Do While Zahl <= 1000 Summe = Summe + Zahl Zahl = Zahl - 1 ‘ Zählfehler! Loop
Die Bedingung einer Entscheidung oder Wiederholung enthält oft Vergleichsoperatoren (=, <, >, <=, >= oder <>):
If Name = “Fridolin” Then ...Do While Name = “Fridolin” ...
Leider verwenden viele Programmiersprachen das Symbol = nicht nur für Vergleiche, sondern auch für eine Zuweisung:
Name = “Fridolin”
Der Vergleich lässt die durch = verbundenen Operanden unverändert (zum Beispiel in If Name = “Fridolin" Then ...). Die Zuweisung ändert hingegen den Inhalt der linken Seite.